package com.example.demo.util;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;


/**
 * @author shuxiangcheng
 * @Description 日期工具类
 */
public class DateUtils extends org.apache.commons.lang.time.DateUtils {
	
	
	
	/**
    * 常用的时间格式.
    */
	private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy/MM/dd",
         "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm" };
   
	/**
    * 将日期型字符串转换为日期格式.
    * 支持的日期字符串格式包括"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm",
    * "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm"
    * @param str
    * @return Date
    * @since 1.0
    */
   public static Date parseDate(Object str) {
      if (str == null) return null;
      try {
         return org.apache.commons.lang.time.DateUtils.parseDate(str.toString(), parsePatterns);
      } catch (ParseException e) {
         return null;
      }
   }
   
	/**
	 * 得到日期时间字符串，转换格式（yyyy-MM-dd HH:mm:ss）
	 */
	public static String formatDateTime(Date date) {
		return formatDate(date, "yyyy-MM-dd HH:mm:ss");
	}
	
	/**
	 * 得到日期字符串 默认格式（yyyy-MM-dd） pattern可以为："yyyy-MM-dd" "HH:mm:ss" "E"
	 */
	public static String formatDate(Date date, Object... pattern) {
		if (date == null) {
			return null;
		}
		String formatDate = null;
		if (pattern != null && pattern.length > 0) {
			formatDate = org.apache.commons.lang.time.DateFormatUtils.format(date, pattern[0].toString());
		} else {
			formatDate = org.apache.commons.lang.time.DateFormatUtils.format(date, "yyyy-MM-dd");
		}
		return formatDate;
	}
	
	/**
	 * 得到当前时间
	 * 
	 * @return
	 * @author hui.long
	 */
	public static Timestamp getTimestamp() {
		Date d = new Date();
		return new Timestamp(d.getTime());
	}
	
	/**
	 * yyyy-MM-dd'T'HH:mm:ss转Timestamp
	 * @param time
	 * @return
	 * @throws Exception 
	 */
	public static Timestamp formatString(String time) throws Exception {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH);
		Date date = format.parse(time);
		Timestamp t = new Timestamp(date.getTime());
		return t;
	}
	
	/**
	 * yyyy-MM-dd'T'HH:mm:ss转Timestamp
	 * @param time
	 * @return
	 * @throws Exception 
	 */
	public static Date formatDateString(String time) throws Exception {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH);
		return format.parse(time);
	}

}
